package com.example.demo.zaqizabatest.leetcode.day9;

/**
 * 输入一个整型数组，数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
 * <p>
 * 1 <= arr.length <= 10^5
 * -100 <= arr[i] <= 100
 * <p>
 * 要求时间复杂度为O(n)。
 */
public class Solution1 {

    public int maxSubArray(int[] nums) {
        int maxSum = Integer.MIN_VALUE;
        int nowSum = 0;
        for (int i = 0; i < nums.length; i++) {
            nowSum = Math.max(nowSum + nums[i], nums[i]);
            maxSum = Math.max(nowSum, maxSum);
        }
        return maxSum;
    }

}
